package main

import (
	"fmt"
	"path"
)

func main() {
	//Clean 通过纯词法处理返回等效于 path 的最短路径名。 它迭代地应用以下规则，直到无法进行进一步处理：
	//
	//1. 用一个斜线代替多个斜线。
	//2. 消除每个。 路径名元素（当前目录）。
	//3.消除每个内部..路径名元素（父目录）
	//    以及它之前的非 .. 元素。
	//4. 消除 .. 开始根路径的元素：
	//    也就是说，将路径开头的“/..”替换为“/”。
	//仅当它是根“/”时，返回的路径才以斜杠结尾。
	//
	//如果此过程的结果是空字符串，则 Clean 返回字符串“.”。
	//
	//另请参阅 Rob Pike，“计划 9 中的词法文件名或使点点正确”

	paths := []string{
		"a/c",
		"a//c",
		"a/c/.",
		"a/c/b/..",
		"/../a/c",
		"/../a/b/../././/c",
		"",
	}

	for _, p := range paths {
		fmt.Printf("Clean(%q) = %q\n", p, path.Clean(p))
	}
}
